package com.xmtlxx.wms.domain.bo;

import com.xmtlxx.common.core.domain.BaseEntity;
import com.xmtlxx.common.core.validate.AddGroup;
import com.xmtlxx.common.core.validate.EditGroup;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;

/**
 * 库存业务对象 t_inventory
 *
 * @author xmtlxx
 * @date 2022-08-15
 */

@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel("库存业务对象")
public class InventoryBo extends BaseEntity {

    /**
     * 库存ID
     */
    @ApiModelProperty(value = "库存ID")
    private String id;

    /**
     * 仓库ID
     */
    @ApiModelProperty(value = "仓库ID", required = true)
    @NotBlank(message = "仓库ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private String storeId;

    /**
     * 库区ID
     */
    @ApiModelProperty(value = "库区ID", required = true)
    @NotBlank(message = "库区ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private String areaId;

    /**
     * 库位ID
     */
    @ApiModelProperty(value = "库位ID", required = true)
    @NotBlank(message = "库位ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private String locatorId;

    /**
     * 货品编号
     */
    @ApiModelProperty(value = "货品编号", required = true)
    @NotBlank(message = "货品编号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String pno;

    /**
     * RFID
     */
    @ApiModelProperty(value = "RFID")
    private String rfid;

    /**
     * 货品名称
     */
    @ApiModelProperty(value = "货品名称", required = true)
    @NotBlank(message = "货品名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String name;

    /**
     * 入库时间
     */
    @ApiModelProperty(value = "入库时间", required = true)
    @NotNull(message = "入库时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date intime;

    /**
     * 入库数量
     */
    @ApiModelProperty(value = "入库数量", required = true)
    @NotNull(message = "入库数量不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long innums;

    /**
     * 出库数量
     */
    @ApiModelProperty(value = "出库数量", required = true)
    @NotNull(message = "出库数量不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long outnums;
    /**
     * 调用数量
     */
    @ExcelProperty(value = "调用数量")
    @NotNull(message = "调用数量不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long tnums;
    /**
     * 归还数量
     */
    @ExcelProperty(value = "归还数量")
    @NotNull(message = "归还数量不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long rnums;

    /**
     * 数量单位
     */
    @ApiModelProperty(value = "数量单位")
    private String unit;

    /**
     * 库存数量
     */
    @ApiModelProperty(value = "库存数量", required = true)
    @NotNull(message = "库存数量不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long nums;

    /**
     * 处置数量
     */
    @ApiModelProperty(value = "处置数量", required = true)
    @NotNull(message = "处置数量不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long deals;

    @ApiModelProperty(value = "出库取证数", required = true)
    private Long eoutnums;

    @ApiModelProperty(value = "调用取证数", required = true)
    private Long etnums;

    /**
     * 最新盘点时间
     */
    @ApiModelProperty(value = "最新盘点时间")
    private Date lastTime;

    /**
     * 下一次盘点时间
     */
    @ApiModelProperty(value = "下一次盘点时间")
    private Date nextTime;

    /**
     * 机构id
     */
    @ApiModelProperty(value = "机构id", required = true)
    @NotNull(message = "机构id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long deptId;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    private String remark;

    /**
     * 状态
     */
    @ApiModelProperty(value = "状态")
    private String status;

    /**
     * 图片附件
     */
    @ApiModelProperty(value = "图片附件")
    private String pics;

    /**
     * 删除标识
     */
    @ApiModelProperty(value = "删除标识")
    private String delFlag;

    private String taskId;

    /**
     * 冗余字段
     * mark:0.增加库存，1.减少库存
     */
    private String mark;

    private String stagingId;

    /**
     * 移交类型
     */
    @ApiModelProperty(value = "移交类型")
    private String type;

    private String classifyId;
    private String secondClassifyId;
    private String thirdClassifyId;
    @ApiModelProperty("财物入库编码")
    private String qrcode;

    /**
     * 柜组id
     */
    @ApiModelProperty("柜组id")
    private String cabinetGroupId;
    /**
     * 柜号id
     */
    @ApiModelProperty("柜号id")
    private String cabinetId;

    /**
     * 箱号
     */
    @ApiModelProperty("箱号")
    private String boxNo;

    /**
     * 保管密码
     */
    @ApiModelProperty("保管密码")
    private String password;


    /**
     * 上架密码
     */
    @ApiModelProperty("上架密码")
    private String putPassword;

    private String pname;

    /**
     * 行政类物品过滤 0 刑事  1 行政
     */
    @ApiModelProperty("行政类物品过滤")
    private String xzType;

    /**
     * 层数
     */
    private String floors;

    private String[] locatorIds;

    private String region;

    private List<String> regions;

    private String pnoKey;

    private String pickType;//0-出库 1-调用 2-处置

    private String putTaskType;//0-出库 1-调用 2-处置

    private String action;//0-入库上架 1-出库挑拣 2-处置挑拣 3-调用挑拣 4-归还上架

    private String objid;

    private String evidence;

    private String tid;

    private String isSecurity;

    private String pnoSearchKey;

    private String isCar;

    private String statusKey;

    private String inventoryType;
}
